Socket
Socket
Sign inDemoInstall

rrweb-snapshot

Package Overview
Dependencies
0
Maintainers
1
Versions
99
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

rrweb-snapshot

rrweb's component to take a snapshot of DOM, aka DOM serializer


Version published
Weekly downloads
353K
decreased by-9.73%
Maintainers
1
Created
Weekly downloads
 

Package description

What is rrweb-snapshot?

The rrweb-snapshot npm package is a part of the rrweb suite, which is used for recording and replaying user interactions on web pages. The rrweb-snapshot package specifically focuses on taking snapshots of the DOM and serializing it into a format that can be used for replaying the recorded interactions.

What are rrweb-snapshot's main functionalities?

Snapshot the DOM

This feature allows you to take a snapshot of the current state of the DOM. The `snapshot` function serializes the DOM into a JSON format that can be used for replaying the recorded interactions.

const { snapshot } = require('rrweb-snapshot');
const domSnapshot = snapshot(document);
console.log(domSnapshot);

Rebuild the DOM

This feature allows you to rebuild the DOM from a previously captured snapshot. The `rebuild` function takes the serialized DOM snapshot and reconstructs it in a specified container.

const { rebuild } = require('rrweb-snapshot');
const domSnapshot = /* previously captured snapshot */;
const container = document.createElement('div');
rebuild(domSnapshot, { doc: document, afterAppend: (n) => container.appendChild(n) });
document.body.appendChild(container);

Other packages similar to rrweb-snapshot

Readme

Source

rrweb-snapshot

Build Status Join the chat at slack

Snapshot the DOM into a stateful and serializable data structure. Also, provide the ability to rebuild the DOM via snapshot.

API

This module export following methods:

snapshot

snapshot will traverse the DOM and return a stateful and serializable data structure which can represent the current DOM view.

There are several things will be done during snapshot:

  1. Inline some DOM states into HTML attributes, e.g, HTMLInputElement's value.
  2. Turn script tags into noscript tags to avoid scripts being executed.
  3. Try to inline stylesheets to make sure local stylesheets can be used.
  4. Make relative paths in href, src, CSS to be absolute paths.
  5. Give an id to each Node, and return the id node map when snapshot finished.
rebuild

rebuild will build the DOM according to the taken snapshot.

There are several things will be done during rebuild:

  1. Add data-rrid attribute if the Node is an Element.
  2. Create some extra DOM node like text node to place inline CSS and some states.
  3. Add data-extra-child-index attribute if Node has some extra child DOM.
serializeNodeWithId

serializeNodeWithId can serialize a node into snapshot format with id.

buildNodeWithSN

buildNodeWithSN will build DOM from serialized node and store serialized information in __sn property.

Keywords

FAQs

Last updated on 04 Apr 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc